home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / asmcode.lbr / SETPR.AQM / SETPR.ASM
Encoding:
Assembly Source File  |  1985-06-03  |  4.7 KB  |  145 lines

  1.      INCLUDE MACROS.ASM
  2.      BEGINCOM SETPR
  3.      JMP   START
  4.  
  5. ;   PICA, 6 LPI, 11"   (STANDARD DEFAULT)
  6. PICA6LPI DB    27,'!',0            ;SET PICA TYPE
  7.      DB    27,'2'              ;SET 6 LPI
  8.      DB    27,'C',0,11         ;SET 11 INCH FORM
  9.      DB    255           ;END OF DATA
  10.      DB    'PRINTER SET: TYPE=PICA, LPI=6, FORM LENGTH = 11 IN',13,10,'$'
  11. ;   PICA, 8 LPI, 11"
  12. PICA8LPI DB    27,'!',0            ;SET PICA TYPE
  13.      DB    27,'0'              ;SET 8 LPI
  14.      DB    27,'C',0,11         ;SET 11 INCH FORM
  15.      DB    255           ;END OF DATA
  16.      DB    'PRINTER SET: TYPE=PICA, LPI=8, FORM LENGTH = 11 IN',13,10,'$'
  17. ;   ELITE, 6 LPI, 11"
  18. ELIT6LPI DB    27,'!',1            ;SET ELITE TYPE
  19.      DB    27,'2'              ;SET 6 LPI
  20.      DB    27,'C',0,11         ;SET 11 INCH FORM
  21.      DB    255           ;END OF DATA
  22.      DB    'PRINTER SET: TYPE=ELITE, LPI=6, FORM LENGTH = 11 IN',13,10,'$'
  23. ;   ELITE, 8 LPI, 11"
  24. ELIT8LPI DB    27,'!',1            ;SET ELITE TYPE
  25.      DB    27,'0'              ;SET 8 LPI
  26.      DB    27,'C',0,11         ;SET 11 INCH FORM
  27.      DB    255           ;END OF DATA
  28.      DB    'PRINTER SET: TYPE=ELITE, LPI=8, FORM LENGTH = 11 IN',13,10,'$'
  29. ;   COND, 6 LPI, 11"
  30. COND6LPI DB    27,'!',4            ;SET COND TYPE
  31.      DB    27,'2'              ;SET 6 LPI
  32.      DB    27,'C',0,11         ;SET 11 INCH FORM
  33.      DB    255           ;END OF DATA
  34.      DB    'PRINTER SET: TYPE=COND, LPI=6, FORM LENGTH = 11 IN',13,10,'$'
  35. ;   COND, 8 LPI, 11"
  36. COND8LPI DB    27,'!',4            ;SET COND TYPE
  37.      DB    27,'0'              ;SET 8 LPI
  38.      DB    27,'C',0,11         ;SET 11 INCH FORM
  39.      DB    255           ;END OF DATA
  40.      DB    'PRINTER SET: TYPE=COND, LPI=8, FORM LENGTH = 11 IN',13,10,'$'
  41. ;   8 1/2 X 11 SIDEWAYS PAPER
  42. SPEC6LPI DB    27,'!',1            ;SET ELITE TYPE
  43.      DB    27,'2'              ;SET 6 LPI
  44.      DB    27,'C',68           ;SET 68 LINES/PAGE
  45.      DB    27,'N',9            ;SKIP 9  LINES AT END OF FORM
  46.      DB    255           ;END OF DATA
  47.      DB    'PRINTER SET: TYPE=ELITE, LPI=6, FORM LENGTH = 8.5 IN',13,10,'$'
  48. SPEC8LPI DB    27,'!',1            ;SET ELITE TYPE
  49.      DB    27,'0'              ;SET 8 LPI
  50.      DB    27,'C',68           ;SET 68 LINES/PAGE
  51.      DB    27,'N',9            ;SKIP 11 LINES AT END OF FORM
  52.      DB    255           ;END OF DATA
  53.      DB    'PRINTER SET: TYPE=ELITE, LPI=8, FORM LENGTH = 8.5 IN',13,10,'$'
  54. NOCHANGE DB    255           ;END OF DATA
  55.      DB    'PRINTER WAS NOT MODIFIED',13,10,'$'
  56. ;
  57. ;
  58. ;
  59. TYPETABL DW    NOCHANGE
  60.      DW    PICA6LPI
  61.      DW    PICA8LPI
  62.      DW    ELIT6LPI
  63.      DW    ELIT8LPI
  64.      DW    COND6LPI
  65.      DW    COND8LPI
  66.      DW    SPEC8LPI
  67.      DW    SPEC8LPI
  68. START:
  69.      MOV   BX,80H           ;POINT AT INPUT PARM AREA
  70.      MOV   AL,[BX]           ;GET LENGTH IF ANY
  71.      CBW
  72.      MOV   CX,AX           ;LINE COUNT TO CX
  73.      OR    AL,AL           ;IS THERE A PARM?
  74.      JZ    PRSL080           ;NO-PRESENT THE MENU
  75.      INC   BX           ;POINT TO INP MSG
  76. PRSL020:
  77.      MOV   AL,[BX]           ;GET INPUT PARAMETER
  78.      CMP   AL,'0'              ;NUMERIC?
  79.      JL    PRSL040           ;NO-PRESENT MENU
  80.      CMP   AL,'8'              ;NUMERIC?
  81.      JG    PRSL040           ;NO-PRESENT MENU
  82.      JMP   PRSL160           ;ELSE - USE THE PARM VALUE
  83. PRSL040: INC   BX           ;POINT TO NEXT CHARACTER
  84.      LOOP  PRSL020           ;AND KEEP LOOKING FOR A NUMBER
  85. ;
  86. ;  MENU DISPLAY
  87. ;
  88. PRSL080:               ;PRESENT A MENU
  89.      @MSG  'P R I N T E R    M O D E    S E L E C T'
  90.      @MSG  ' '
  91.      @MSG  '1) STANDARD PICA PRINT, 6 LPI, 11 INCH FORM'
  92.      @MSG  ' '
  93.      @MSG  '2) STANDARD PICA PRINT, 8 LPI, 11 INCH FORM'
  94.      @MSG  ' '
  95.      @MSG  '3) ELITE TYPE, 6 LPI, 11 INCH FORM'
  96.      @MSG  ' '
  97.      @MSG  '4) ELITE TYPE, 8 LPI, 11 INCH FORM'
  98.      @MSG  ' '
  99.      @MSG  '5) CONDENSED PRINT, 6 LPI, 11 INCH FORM'
  100.      @MSG  ' '
  101.      @MSG  '6) CONDENSED PRINT, 8 LPI, 11 INCH FORM'
  102.      @MSG  ' '
  103.      @MSG  '7) ELITE TYPE, 6 LPI, 8.5 INCH FORM'
  104.      @MSG  ' '
  105.      @MSG  '8) ELITE TYPE, 8 LPI, 8.5 INCH FORM'
  106.      @MSG  ' '
  107.      @MSG  '0) CANCEL PROGRAM - LEAVE PRINTER UNCHANGED'
  108.      @MSG  ' '
  109.      @MSG  ' '
  110.      @MSG  'PRESS A DIGIT KEY TO SELECT PRINT STYLE'
  111. ;
  112. ;
  113. ;
  114. PRSL100: MOV   AL,7
  115.      @DOS  0CH           ;FLUSH INPUT BUFFER & WAIT FOR CHAR
  116.      CMP   AL,'0'              ;NUMERIC?
  117.      JL    PRSL100           ;NO-WAIT FOR LEGAL CHAR
  118.      CMP   AL,'8'              ;WITHIN RANGE?
  119.      JG    PRSL100           ;NO-TRY AGAIN
  120. ;
  121. ; PARM READY - SET UP THE PRINTER
  122. ;
  123. PRSL160: SUB   AL,30H           ;GET AN INDEX VALUE
  124.      CBW               ;GET 2 BYTE INXEX
  125.      MOV   BX,AX
  126.      SHL   BX,1           ;INDEX TO ESCAPE CODE TABLE
  127.      MOV   BX,TYPETABL [BX]    ;GET POINTER TO CORRECT SEQUENCE
  128. ;
  129. ; SEND ESCAPE SEQUENCE TO PRINTER
  130. ;
  131. PRSL220: MOV   DL,[BX]           ;GET CHARACTER
  132.      CMP   DL,255           ;END OF SEQUENCE?
  133.      JE    PRSL300           ;YES-SEND MESSAGE BACK
  134.      @DOS  5           ;ELSE SEND CHAR TO PRINTER
  135.      INC   BX
  136.      JMP   PRSL220
  137. ;
  138. ; SEND CONFIRMATION TO CONSOLE
  139. ;
  140. PRSL300: MOV   DX,BX           ;POINT TO X'FF'
  141.      INC   DX           ;POINT TO MESSAGE
  142.      @DOS  9           ;PRINT STRING
  143. PRSL340: @DOS  0           ;QUIT-BACK TO DOS
  144.      ENDCOM SETPR
  145.